package com.wwh.furns.dao;

import com.wwh.furns.entity.Furn;

import java.util.List;

/**
 * @author Albert
 * @date 2024/5/27-14:28
 * @describe
 */
public interface FurnDAO {
    /**
     * 返回所有的家居信息集合，后面再考虑分页
     * @return
     */
    public List<Furn> queryFurns();

    /**
     * 添加一个家居信息
     * @param furn 需要添加的家居对象
     * @return 如果添加成功返回1，添加失败返回-1
     */
    public int addFurn(Furn furn);

    /**
     * 删除一个家具信息
     * @param id 需要删除的家具ID
     * @return 受影响的行数
     */
    public int deleteFurnById(int id);

    /**
     * 根据id查询一个家具
     * @param id 需要查询的家具id
     * @return 返回所查询的家具
     */
    public Furn queryFurnById(int id);

    /**
     * 根据传入的Furn更新数据库中的Furn
     * @param furn
     * @return 影响的行数，如果为1，则修改成功，如果为0，则修改失败
     */
    public int updateFurn(Furn furn);

    // Page的哪些属性是从数据库中获取的，就把哪些属性的填充任务放到DAO层

    /**
     * 查询总共有多少条数据
     * @return 总的数据数
     */
    public int getTotalRow();

    /**
     * 获取当前页要显示的数据
     * @param begin 从第几条记录开始获取，从0开始计算
     * @param pageSize 示取出多少条记录
     * @return 需要显示的furn
     */
    public List<Furn> getPageItems(int begin, int pageSize);

    /**
     * 根据名字来获取总记录数
     * @param name 家具名字
     * @return 含有该家具名字的总记录数
     */
    public int getTotalRowByName(String name);

    /**
     * 根据当前页、页面大小和家具名字获取需要显示的数据
     * @param begin 当前页
     * @param pageSize 页面大小
     * @param name 家具名字
     * @return 需要显示的数据
     */
    public List<Furn> getPageItemsByName(int begin, int pageSize, String name);
}
